package com.csu.mapper;

import com.csu.entity.User;
import com.csu.vo.LoginRespVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
@Mapper
public interface UserMapper {
    //根据用户名和密码获取User对象
    User getUserByUsernameAndPassword(String username, String password);

    //根据用户名获取UserId
    int getIdByUsername(String username);

    //根据userId获取用户名
    String getUsernameById(int userId);

    //查询所有的班级成员
    List<User> getClassMemberByUserId(int userId);
    //根据class_id获取User列表
    List<User> getStudentsByClassId(int class_id);

    //插入一个User对象
    int insertUser(int userId, String accountName ,String password, int roleId, int classId);

    int insertUserByUserId(int userId, String accountName ,String password, int roleId, int classId);

    //修改用户名
    int changeUsername(String name, int id);

    //修改密码
    int changePassword(String password, int id);

    //通过userId获取roleId
    Integer getRoleIdByUserId(int userId);

    /**
     * 获取待审核的家长列表
     */
    Integer getClassIdByUserId(int userId);

    /**
     * 获取user_id最大值
     */
    int getMaxUserId();

    /**
     * 获取登录需要信息
     */
    LoginRespVO getLoginInfoByUsername(String username);

    /**
     *通过class_id获取班级成员
     */
    List<User> getUserListByClassId(int classId);

    /**
     * 通过accountName获取Username
     */
    String getUsernameByAccountName(String accountName);

    /**
     * 通过accountName和密码查找用户
     */
    User getUserByAccountNameAndPassword(String accountName, String password);

    /**
     * 通过accountName获取
     */
    LoginRespVO getLoginInfoByAccountName(String accountName);

    /**
     * 获取所有的accountName
     */
    List<String> getAccountNameList();

    /**
     * 通过id获取名字
     */
    String getNameById(int id);
    /**
     * 通过AccountName获取Id
     */
    int getIdByAccountName(String accountName);
    /**
     * 通过class_id获取老师列表
     */
    List<Integer> getTeacherIdsByClassId(int classId);

    /**
     * 通过classId获取userId
     */
    List<Integer> getUserIdListByClassId(int classId);

    /**
     * 通过UserId获取SubjectId
     */
    int getSubjectIdByUserId(int userId);

    /**
     * 通过班级和学科获取老师Id
     */
    Integer getUserIdByClassIdAndSubjectId(int subjectId, int classId);

    /**
     * 获取班级学生人数
     */
    int getNumByClassId(int classId);

    /**
     * 获取USER表中特定class_id对应的subject_id
     */
    List<Integer> getSubjectIdByClassId(int classId);
}

